package demo1;

//接口就是公共的行为规范标准，如USB接口，只要符合公共标准就可以通用
//Java中的接口可以看作是多个类的公共规范，是引用数据类型
interface IShape {
    int a = 10;
    void draw();
    //接口中的变量默认是public static final的,方法默认是public abstract的
    //写的时候只写变量名，不用写public static final，只写返回值和方法名，不用写public abstract
    //从Java8开始接口中可以有default方法，也可以有静态方法
    //    default void test(){
    //        System.out.println("test");
    //    }
    //    public static void test2(){
    //        System.out.println("test2");
    //    }
    //但不能有普通方法
    //    public void test3() {
    //        System.out.println("test3");
    //    }
    //    这样会报错,可以加default，变成default public

}


//注意事项总结：
//1. 接口类型是一种引用类型，但是不能直接new接口的对象
//(2.) 接口不能有构造方法，但是接口中的方法可以有构造方法，但是不能直接调用，只能通过实现类调用
//2. 接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为public abstract(只能是public abstract，其他修饰符都会报错)
//3. 接口中的方法是不能在接口中实现的，只能由实现接口的类来实现
//4. 重写接口中方法时，不能使用默认的访问权限
//5. 接口中可以含有变量，但是接口中的变量会被隐式的指定为public static ﬁnal变量
//6. 接口中不能有静态代码块和构造方法
//7. 接口虽然不是类，但是接口编译完成后字节码文件的后缀格式也是.class
//8. 如果类没有实现接口中的所有的抽象方法，则类必须设置为抽象类
//9. jdk8中：接口中还可以包含default方法。